<?php
/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of NuevoUsuario
 *
 * @author kristian
 */
class Form_NuevoUsuario extends Zend_Form{

    public function __construct($usuario = null) {
        parent::__construct();

        $this->setName('Usuarios');
        $this->setMethod('post');

        $localidadesModel = new Spalm_Model_Single_LocalidadEntity();
        $localidades = $localidadesModel->fetchAll();

        $listaLocalidades = array();

        foreach ($localidades as $localidadActual) {
            $listaLocalidades[$localidadActual->getPK()] = $localidadActual->getNombre();
        }
        
        $submitName = 'Guardar';

        // se quiere editar a un usuario
        $editar = ($usuario !== null);
        if ($editar){ // si se quiere editar
            $nombreUsuario = $usuario->getNombre();
            $apellidoUsuario = $usuario->getApellido();
            $email = $usuario->getEmail();
            $fechaNacimiento = $usuario->getFechaNacimiento();
            $loginName = $usuario->getLoginName();
            $password = $usuario->getPassword();
            $localidad = $usuario->getLocalidad()->getPK();
            $submitName = 'Guardar';

        }
        else { // si se quiere crear un nueva localidad
            list($locKey,$locName) = each($listaLocalidades);
            $hoy = new Zend_Date();

            $nombreUsuario = '';
            $apellidoUsuario = '';
            $email = '';
            $fechaNacimiento = $hoy->toString('yyyy-MM-dd');
            $loginName = '';
            $password = '';
            $localidad = $locKey;
            $submitName = 'Agregar';
        }

        // filtros
        $trim = new Zend_Filter_StringTrim();
        $noHtml = new Zend_Filter_StripTags();
//        $cifrar = new Zend_Filter_Encrypt(
//            array(
//                'adapter'=>'mcrypt',
//                'algorithm'=>MCRYPT_RIJNDAEL_128,
//                'mode'=>MCRYPT_MODE_CBC,
//                'key'=>$clave,
//                'vector'=>$vector
//            )
//        );

        // validadores
        $valEmail = new Zend_Validate_EmailAddress();
        $valEmail->setMessage('La direccion de email esta mal formada');

        $valAlnum = new Zend_Validate_Alnum();
        $valAlnum->setMessage('Solo letras y números');

        $valAlpha = new Zend_Validate_Alpha();
        $valAlpha->setMessage('Solo letras');

        $valDate = new Zend_Validate_Date();
        $valDate->setMessage('Por favor, corrija la fecha');
        $valDate->setFormat('yyyy-MM-dd');

        $valNotEmpty = new Zend_Validate_NotEmpty();
        $valNotEmpty->setMessage('Este campo no puede estar en blanco');

        $valLongitudNB = new Zend_Validate_StringLength();
        $valLongitudNB->setMax(45);

        $valLongitudAP = new Zend_Validate_StringLength();
        $valLongitudAP->setMax(45);

        $valLongitudLN = new Zend_Validate_StringLength();
        $valLongitudLN->setMax(45);

        $valLongitudPS = new Zend_Validate_StringLength();
        $valLongitudPS->setMax(32);
        $valLongitudPS->setMin(8);

        $valLongitudML = new Zend_Validate_StringLength();
        $valLongitudML->setMax(45);

        // pantalla

        $txtNombre = new Zend_Form_Element_Text('nombre');
        $txtNombre->setLabel('Nombre: ');
        $txtNombre->setValue($nombreUsuario);
        $txtNombre->setRequired(true);
        $txtNombre->addFilter($trim);
        $txtNombre->addFilter($noHtml);
        $txtNombre->addValidator($valNotEmpty);
        $txtNombre->addValidator($valLongitudNB);
        $txtNombre->addValidator($valAlpha);

        $txtApellido = new Zend_Form_Element_Text('apellido');
        $txtApellido->setLabel('Apellido: ');
        $txtApellido->setValue($apellidoUsuario);
        $txtApellido->setRequired(true);
        $txtApellido->addFilter($trim);
        $txtApellido->addFilter($noHtml);
        $txtApellido->addValidator($valNotEmpty);
        $txtApellido->addValidator($valLongitudAP);
        $txtApellido->addValidator($valAlpha);

        $txtFechaNacimiento = new Zend_Form_Element_Text('fechaNacimiento');
        $txtFechaNacimiento->setLabel('Fecha de nacimiento: ');
        $txtFechaNacimiento->setValue($fechaNacimiento);
        $txtFechaNacimiento->addFilter($trim);
        $txtFechaNacimiento->addFilter($noHtml);
        $txtFechaNacimiento->addValidator($valNotEmpty);
        $txtFechaNacimiento->addValidator($valDate);

        $slLocalidades = new Zend_Form_Element_Select('localidades');
        $slLocalidades->setLabel('Localidades: ');
        $slLocalidades->setMultiOptions($listaLocalidades);
        $slLocalidades->setValue($localidad);
        $slLocalidades->setRequired(true);
        $slLocalidades->addValidator($valNotEmpty);

        $txtEmail = new Zend_Form_Element_Text('email');
        $txtEmail->setLabel('Correo electrónico');
        $txtEmail->setValue($email);
        $txtEmail->addFilter($trim);
        $txtEmail->addFilter($noHtml);
      //  $txtEmail->addValidator($valNotEmpty);
        $txtEmail->addValidator($valLongitudML);
        $txtEmail->addValidator($valEmail);

        $txtLoginName = new Zend_Form_Element_Text('loginName');
        $txtLoginName->setLabel('Nombre de usuario: ');
        $txtLoginName->setValue($loginName);
        $txtLoginName->setRequired(true);
        $txtLoginName->addFilter($trim);
        $txtLoginName->addFilter($noHtml);
        $txtLoginName->addValidator($valNotEmpty);
        $txtLoginName->addValidator($valLongitudLN);
        $txtLoginName->addValidator($valAlnum);

        $pwdPassword = new Zend_Form_Element_Password('password');
        $pwdPassword->setLabel('Contraseña: ');
        $pwdPassword->setValue($password);
        $pwdPassword->addFilter($trim);
        $pwdPassword->addFilter($noHtml);
//        $pwdPassword->addFilter($cifrar);
        $pwdPassword->addValidator($valAlnum);

        $pwdRepetirPassword = new Zend_Form_Element_Password('repetirPassword');
        $pwdRepetirPassword->setLabel('Repetir contraseña: ');
        $pwdRepetirPassword->setValue($password);
        $pwdRepetirPassword->addFilter($trim);
        $pwdRepetirPassword->addFilter($noHtml);
//        $pwdRepetirPassword->addFilter($cifrar);
        $pwdRepetirPassword->addValidator($valAlnum);

        if (!$editar){
            $pwdPassword->setRequired(true);
            $pwdPassword->addValidator($valNotEmpty);
            $pwdPassword->addValidator($valLongitudPS);

            $pwdRepetirPassword->setRequired(true);
            $pwdRepetirPassword->addValidator($valNotEmpty);
            $pwdRepetirPassword->addValidator($valLongitudPS);
        }
        
        $submit = new Zend_Form_Element_Submit('submit');
        $submit->setLabel($submitName);
        $submit->setAttrib('onclick', "return confirm('Por favor, confirme')");

        $reset = new Zend_Form_Element_Reset('reset');
        $reset->setLabel('Reiniciar');

        $this->addElement($txtNombre);
        $this->addElement($txtApellido);
        $this->addElement($txtFechaNacimiento);
        $this->addElement($slLocalidades);
        $this->addElement($txtEmail);
        $this->addElement($txtLoginName);
        $this->addElement($pwdPassword);
        $this->addElement($pwdRepetirPassword);
        $this->addElement($submit);
        $this->addElement($reset);

    }
}
?>
